1. Technical Field
This invention generally relates to computer systems, and more specifically relates to flash memory in computer systems.
2. Background Art
Modern life is becoming more dependent upon computers. Computers have evolved into extremely sophisticated devices, and may be found in many different applications. These applications involve everything from application specific computers found in every day devices such as automobiles, phones and other electronics, to the general purpose computers found in the form of PDAs, personal computers, servers and mainframes.
One of the main components in modern computer systems is memory. Many different types of memory products are commonly used in computer systems. Most memory used in computer is volatile, meaning that it requires power to store information. If the power is turned off, the information stored in volatile memory is lost. In certain applications, some memory in the computer system must be able to retain the information even when power is off. For these applications, a non-volatile memory is used to store the information that cannot be lost when the power is turned off.
One common type of non-volatile memory is called flash. Flash memory is used in a wide variety of applications, such as storing control code in computer systems. In flash memory an electric charge is stored on a floating gate in each cell, with the level of the electric charge determining the value for that cell. In flash memory the memory is organized so that a section of memory cells is erased in a single action or “flash”. This erase uses tunneling in which electrons pierce through a thin dielectric material to remove the electronic charge from the floating gate associated with each memory cell.
Flash memory has several operational characteristics that introduce difficulties for the software that manages it. For example, flash memory must be erased before it can be written. Additionally, the section size for writes (commonly called a page) is often different than the section size for erasures (commonly called a block). For example, a flash memory system could have a page size of 2 k bytes and thus allow writes at the 2 k increments, but have a block size of 64 k bytes and thus only allow entire 64 k sections to be erased at a time. Another difficulty is that flash memory generally has a restricted lifetime, with a limited number of erases before it fails. Finally, flash memory will in some circumstances fail prematurely.
All of these characteristics of flash memory introduce difficulties in some applications, and must be addressed. Attempts to address these difficulties in the past have led to unacceptable performance degradation.
Thus, what is needed is an improved performance management system for controlling the operation and use of flash memory in computer systems.